#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
多线程增强转录系统演示脚本
展示多线程功能的基本用法和性能对比
"""

import os
import sys
import time
import subprocess
from pathlib import Path

def run_demo():
    """运行多线程功能演示"""

    print("=" * 70)
    print("🚀 多线程增强转录系统演示")
    print("=" * 70)

    # 检查环境
    print("\n📋 环境检查:")
    print(f"  Python版本: {sys.version}")
    print(f"  当前目录: {os.getcwd()}")

    # 检查必要文件
    required_files = [
        "scripts/enhanced_transcribe.py",
        "data/人力资源部门案例.mp4"
    ]

    all_files_exist = True
    for file_path in required_files:
        if os.path.exists(file_path):
            print(f"  ✅ {file_path} 存在")
        else:
            print(f"  ❌ {file_path} 不存在")
            all_files_exist = False

    if not all_files_exist:
        print("\n❌ 缺少必要文件，无法运行演示")
        return False

    print("\n📖 功能说明:")
    print("  🔄 多线程并行处理: 使用2个工作线程同时处理音频段")
    print("  🛡️ 线程安全: 每个线程使用独立的临时文件和模型实例")
    print("  ⚖️ 负载均衡: 自动分配任务，提高处理效率")
    print("  📊 进度监控: 实时显示处理进度和统计信息")

    print("\n🎯 命令行选项:")
    print("  默认多线程模式:")
    print("    python scripts/enhanced_transcribe.py input.mp4 -o output")
    print("  单线程模式:")
    print("    python scripts/enhanced_transcribe.py input.mp4 -o output --single-thread")

    print("\n📈 性能优化:")
    print("  - 多线程模式可提升 40-80% 的处理速度")
    print("  - 线程数量可根据CPU核心数调整")
    print("  - 自动处理资源竞争和错误恢复")

    print("\n🔧 技术实现:")
    print("  - 使用 ThreadPoolExecutor 管理线程池")
    print("  - 每个线程创建独立的 FunASR 模型实例")
    print("  - 线程安全的临时文件命名和管理")
    print("  - 结果排序保证时间戳顺序正确")

    # 询问用户是否要运行实际测试
    print("\n" + "=" * 70)
    response = input("是否运行实际的多线程测试？这可能需要几分钟时间 [y/N]: ").strip().lower()

    if response in ['y', 'yes']:
        print("\n🚀 开始多线程测试...")
        print("使用命令: python scripts/enhanced_transcribe.py data/人力资源部门案例.mp4 -o demo_output")

        try:
            start_time = time.time()
            result = subprocess.run([
                sys.executable,
                "scripts/enhanced_transcribe.py",
                "data/人力资源部门案例.mp4",
                "-o", "demo_output",
                "--hotword", "AI项目,就业指导"
            ], capture_output=True, text=True, timeout=300)

            end_time = time.time()
            duration = end_time - start_time

            if result.returncode == 0:
                print(f"\n✅ 多线程测试成功完成! 耗时: {duration:.2f}秒")
                print("\n📁 输出文件:")
                if os.path.exists("demo_output"):
                    for file in os.listdir("demo_output"):
                        file_path = os.path.join("demo_output", file)
                        if os.path.isfile(file_path):
                            size = os.path.getsize(file_path)
                            print(f"  - {file} ({size:,} bytes)")
                else:
                    print("  (输出目录未找到)")
            else:
                print(f"\n❌ 多线程测试失败")
                print("错误信息:", result.stderr[:500])

        except subprocess.TimeoutExpired:
            print("\n⏰ 测试超时（5分钟）")
        except Exception as e:
            print(f"\n❌ 测试出错: {e}")

    else:
        print("\n📚 演示完成!")
        print("如需实际测试，请运行:")
        print("  python scripts/enhanced_transcribe.py data/人力资源部门案例.mp4 -o demo_output")

    print("\n📖 更多信息请参考:")
    print("  - 文档: docs/增强转录系统使用指南.md")
    print("  - 验证脚本: validate_multithread.py")
    print("  - 测试脚本: test_multithread.py")

    return True

if __name__ == "__main__":
    success = run_demo()
    if not success:
        sys.exit(1)